/**
 * 
 */
package br.gov.sjc.aluguelsocial;

import br.gov.sjc.classes.NumeroSias;
import br.gov.sjc.dao.BaseDAO;
import br.gov.sjc.utils.Sair;
import android.app.AlertDialog;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

/**
 * @author rodrigo.ramos
 * 
 */
public class EnderecoActivity extends Sair {
	String TAG = "EnderecoActivity";
	// Declara base de dados
	public static SQLiteDatabase BancoDados = null;
	public static String nomeBanco = BaseDAO.DATABASE_NAME;

	public void openDB() {
		try {
			BancoDados = openOrCreateDatabase(nomeBanco, MODE_WORLD_READABLE,
					null);
			// File dbFile = new File(Environment.getExternalStorageDirectory(),
			// nomeBanco);
			// BancoDados = SQLiteDatabase.openOrCreateDatabase(dbFile,null);
			Log.v("EnderecoActivity", "BancoDados.openOrCreateDatabase();");
		} catch (Exception E) {
			Log.e("EnderecoActivity",
					"Erro em BancoDados.close();" + E.getMessage());
		}
	}

	public void closeDB() {
		BancoDados.close();
		Log.v("EnderecoActivity", "BancoDados.close();");
	}

	// Declara TextBox
	EditText tbLogradouro, tbNumero, tbAp, tbBloco, tbComplemento, tbCep;
	EditText tbReferencia, tbNumComodos, tbNumMoradores,
	tbNumNucleosFamiliares;
	EditText tbTMDFCasaAno, tbTMDFCasaMes, tbTMDFCasaDia;
	EditText tbTMDFBairroAno, tbTMDFBairroMes, tbTMDFBairroDia;
	EditText tbTMDFMunicipioAno, tbTMDFMunicipioMes, tbTMDFMunicipioDia;

	Spinner spCondicaoMoradia, spTipoConstrucao, spArea;

	CheckBox cbAlterouEndereco;

	AutoCompleteTextView actvBairro;
	// Declara Buttons
	Button btnEnVoltar, btnEnIr;

	// Declara base de dados
	// SQLiteDatabase BancoDados = AluguelSocialAct.BancoDados ;

	// Pega o numero do Sias em uso atual
	NumeroSias ns = new NumeroSias();
	int NumSias = ns.getNumeroDaFamilia();
	int ID;

	// Declara Cursor
	Cursor cVerifica;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.endereco);
		registerBaseActivityReceiver();

		btnEnVoltar = (Button) findViewById(R.endereco.btnVoltar);
		btnEnIr = (Button) findViewById(R.endereco.btnIr);
		tbLogradouro = (EditText) findViewById(R.endereco.tbLogradouro);
		tbNumero = (EditText) findViewById(R.endereco.tbNumero);
		tbAp = (EditText) findViewById(R.endereco.tbAp);
		tbBloco = (EditText) findViewById(R.endereco.tbBloco);
		tbComplemento = (EditText) findViewById(R.endereco.tbComplemento);
		tbCep = (EditText) findViewById(R.endereco.tbCep);
		tbReferencia = (EditText) findViewById(R.endereco.tbReferencia);
		tbNumComodos = (EditText) findViewById(R.endereco.tbNComodos);
		tbNumMoradores = (EditText) findViewById(R.endereco.tbNMoradores);
		tbNumNucleosFamiliares = (EditText) findViewById(R.endereco.tbNNucleosFamiliares);
		tbTMDFCasaAno = (EditText) findViewById(R.endereco.tbTMDFCasaAno);
		tbTMDFCasaMes = (EditText) findViewById(R.endereco.tbTMDFCasaMes);
		tbTMDFCasaDia = (EditText) findViewById(R.endereco.tbTMDFCasaDia);
		tbTMDFBairroAno = (EditText) findViewById(R.endereco.tbTMDFBairroAno);
		tbTMDFBairroMes = (EditText) findViewById(R.endereco.tbTMDFBairroMes);
		tbTMDFBairroDia = (EditText) findViewById(R.endereco.tbTMDFBairroDia);
		tbTMDFMunicipioAno = (EditText) findViewById(R.endereco.tbTMDFMunicipioAno);
		tbTMDFMunicipioMes = (EditText) findViewById(R.endereco.tbTMDFMunicipioMes);
		tbTMDFMunicipioDia = (EditText) findViewById(R.endereco.tbTMDFMunicipioDia);

		spCondicaoMoradia = (Spinner) findViewById(R.endereco.spCondicaoMoradia);
		ArrayAdapter<CharSequence> adpspCondicaoMoradia = ArrayAdapter
				.createFromResource(this, R.array.CondicaoMoradia,
						android.R.layout.simple_spinner_item);
		adpspCondicaoMoradia
		.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spCondicaoMoradia.setAdapter(adpspCondicaoMoradia);

		spTipoConstrucao = (Spinner) findViewById(R.endereco.spTipoConstrucao);
		ArrayAdapter<CharSequence> adpspTipoConstrucao = ArrayAdapter
				.createFromResource(this, R.array.TipoConstrucao,
						android.R.layout.simple_spinner_item);
		adpspTipoConstrucao
		.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spTipoConstrucao.setAdapter(adpspTipoConstrucao);

		spArea = (Spinner) findViewById(R.endereco.spArea);
		ArrayAdapter<CharSequence> adpspArea = ArrayAdapter.createFromResource(
				this, R.array.Area, android.R.layout.simple_spinner_item);
		adpspArea
		.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spArea.setAdapter(adpspArea);

		actvBairro = (AutoCompleteTextView) findViewById(R.endereco.actvBairro);
		ArrayAdapter<CharSequence> adpactvBairro = ArrayAdapter
				.createFromResource(this, R.array.Bairro,
						android.R.layout.simple_list_item_1);
		actvBairro.setAdapter(adpactvBairro);

		cbAlterouEndereco = (CheckBox) findViewById(R.endereco.cbAlterouEndereco);

		/** Inicia o set de dados caso haja dados */
		if (verificaRegistro(NumSias)) {
			setarDados(ID);
			Log.v("EnderecoActivity", "onCreate() Com dados do SiasN: "
					+ NumSias + "ID: " + ID);
		} else {
			// Num tem seNão
			Log.v("EnderecoActivity", "onCreate() Com dados vazios ");
		}

		/** Acao do botao Voltar */
		btnEnVoltar.setOnClickListener(new View.OnClickListener() {
			public void onClick(View arg0) {
				/** InitComponents */
				Intent ittEnVoltar = new Intent(getApplicationContext(),
						LocalizadoActivity.class);
				// closeDB();
				startActivity(ittEnVoltar);
			}
		});// fim acao do botao voltar

		/** Acao do botao Prox */
		btnEnIr.setOnClickListener(new View.OnClickListener() {
			public void onClick(View arg0) {
				validaRegistro();
			}
		});// fim acao do botao Px
		//if (cbAlterouEndereco.isChecked()) {
			liberaEdicao();
		/*} else {
			bloqueiaEdicao();
		}*/
	}

	protected void validaRegistro() {
		int erro = 0;
		String msg = "";


			if (tbTMDFBairroAno.getText().toString().equals("")
					&& tbTMDFBairroMes.getText().toString().equals("")
					&& tbTMDFBairroDia.getText().toString().equals("")) {
				// Toast.makeText(EnderecoActivity.this,
				// "O Tempo de Moradia da Família no BAIRRO está Vazio",
				// Toast.LENGTH_LONG).show();
				msg += "O Tempo de Moradia da Família no BAIRRO está Vazio";
				msg += "\n";
				erro++;
			} else {
				if (!tbTMDFBairroMes.getText().toString().equals("")) {
					int bairroMes = 0;
					bairroMes = Integer.valueOf(tbTMDFBairroMes.getText().toString());
					if (bairroMes > 12) {
						// Toast.makeText(EnderecoActivity.this,
						// "Verifique O Tempo de Moradia da Família no BAIRRO: Mês > 12 ou Dia > 30",
						// Toast.LENGTH_LONG).show();
						msg += "Verifique O Tempo de Moradia da Família no BAIRRO: Mês deve ser menor que 12";
						msg += "\n";
						erro++;
					}
				}

				if (!tbTMDFBairroDia.getText().toString().equals("")) {
					int bairroDia = 0;
					bairroDia = Integer.valueOf(tbTMDFBairroDia.getText().toString());
					if (bairroDia > 30) {
						// Toast.makeText(EnderecoActivity.this,
						// "Verifique O Tempo de Moradia da Família no BAIRRO: Mês > 12 ou Dia > 30",
						// Toast.LENGTH_LONG).show();
						msg += "Verifique O Tempo de Moradia da Família no BAIRRO: Dia deve ser menor que 30";
						msg += "\n";
						erro++;
					}
				}
			}

			if (tbTMDFCasaAno.getText().toString().equals("")
					&& tbTMDFCasaMes.getText().toString().equals("")
					&& tbTMDFCasaDia.getText().toString().equals("")) {
				// Toast.makeText(EnderecoActivity.this,
				// "O Tempo de Moradia da Família no CASA está Vazio",
				// Toast.LENGTH_LONG).show();
				msg += "O Tempo de Moradia da Família no CASA está Vazio";
				msg += "\n";
				erro++;
			} else {
				if (!tbTMDFCasaMes.getText().toString().equals("")) {
					int mes = 0;
					mes = Integer.valueOf(tbTMDFCasaMes.getText().toString());
					if (mes > 12) {
						// Toast.makeText(EnderecoActivity.this,
						// "Verifique O Tempo de Moradia da Família no BAIRRO: Mês > 12 ou Dia > 30",
						// Toast.LENGTH_LONG).show();
						msg += "Verifique O Tempo de Moradia da Família na CASA: Mês deve ser menor que 12";
						msg += "\n";
						erro++;
					}
				}

				if (!tbTMDFCasaDia.getText().toString().equals("")) {
					int dia = 0;
					dia = Integer.valueOf(tbTMDFCasaDia.getText().toString());
					if (dia > 30) {
						// Toast.makeText(EnderecoActivity.this,
						// "Verifique O Tempo de Moradia da Família no BAIRRO: Mês > 12 ou Dia > 30",
						// Toast.LENGTH_LONG).show();
						msg += "Verifique O Tempo de Moradia da Família na CASA: Dia deve ser menor que 30";
						msg += "\n";
						erro++;
					}
				}
			}

			if (tbTMDFMunicipioAno.getText().toString().equals("")
					&& tbTMDFMunicipioMes.getText().toString().equals("")
					&& tbTMDFMunicipioDia.getText().toString().equals("")) {
				/*
				 * Toast.makeText(EnderecoActivity.this,
				 * "O Tempo de Moradia da Família no MUNICÍPIO está Vazio",
				 * Toast.LENGTH_LONG).show();
				 */
				msg += "O Tempo de Moradia da Família no MUNICÍPIO está Vazio";
				msg += "\n";
				erro++;
			} else {
				if (!tbTMDFMunicipioMes.getText().toString().equals("")) {
					int mes = 0;
					mes = Integer.valueOf(tbTMDFMunicipioMes.getText().toString());
					if (mes > 12) {
						// Toast.makeText(EnderecoActivity.this,
						// "Verifique O Tempo de Moradia da Família no BAIRRO: Mês > 12 ou Dia > 30",
						// Toast.LENGTH_LONG).show();
						msg += "Verifique O Tempo de Moradia da Família no MUNICIPIO: Mês deve ser menor que 12";
						msg += "\n";
						erro++;
					}
				}

				if (!tbTMDFMunicipioDia.getText().toString().equals("")) {
					int dia = 0;
					dia = Integer.valueOf(tbTMDFMunicipioDia.getText().toString());
					if (dia > 30) {
						// Toast.makeText(EnderecoActivity.this,
						// "Verifique O Tempo de Moradia da Família no BAIRRO: Mês > 12 ou Dia > 30",
						// Toast.LENGTH_LONG).show();
						msg += "Verifique O Tempo de Moradia da Família no MUNICÍPIO: Dia deve ser menor que 30";
						msg += "\n";
						erro++;
					}
				}
			}

			if (tbNumComodos.getText().toString().equals("")
					|| tbNumMoradores.getText().toString().equals("")
					|| tbNumNucleosFamiliares.getText().toString().equals("")) {
				// Toast.makeText(EnderecoActivity.this,
				// "Verifique o número de comodos, de moradores ou de núcleos familiares",
				// Toast.LENGTH_LONG).show();
				msg += "Verifique o número de comodos, de moradores ou de núcleos familiares";
				msg += "\n";
				erro++;
			}
			
			if(cbAlterouEndereco.isChecked()){
				// valida registros antes de serem persistidos na tabela
				if (tbLogradouro.getText().toString().equals("")) {
					msg += "Endereço está Vazio";
					msg += "\n";
					erro++;
				}

				if (tbNumero.getText().toString().equals("")) {
					// Toast.makeText(EnderecoActivity.this, "Número está Vazio",
					// Toast.LENGTH_LONG).show();
					msg += "Número está Vazio";
					msg += "\n";
					erro++;
				}
			if(actvBairro.getText().toString().equals("")){
				msg += "Bairro está Vazio";
				msg += "\n";
				erro++;
			}
			ArrayAdapter<CharSequence> adpChar = ArrayAdapter.createFromResource(
					this, R.array.Bairro,
					android.R.layout.simple_spinner_item);
			//adpChar.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
			int position = adpChar.getPosition(actvBairro.getText().toString());
			if(position < 0){
				msg += "Campo Bairro está Com Valor Inválido";
				msg += "\n";
				erro++;
			}
		}//fim do checked de alterou endereço

		if (erro == 0) {
			if (verificaRegistro(NumSias)) {
				alteraRegistro(ID);
			} else {
				Toast.makeText(this,
						"Inserção de Famílias Não Está Disponível",
						Toast.LENGTH_LONG).show();
				// salvaDados(NumSias,tbLogradouro.getText().toString(),
				// tbNumero.getText().toString(), tbAp.getText().toString(),
				// tbBloco.getText().toString(),
				// tbComplemento.getText().toString(),
				// tbReferencia.getText().toString(),
				// tbCep.getText().toString(), actvBairro.getText().toString());
			}
			/** InitComponents */
			Intent ittEnIr = new Intent(getApplicationContext(),
					TelefoneMainAct.class);
			startActivity(ittEnIr);
		} else {
			Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
		}

	}

	// CREATE TABLE IF NOT EXISTS tab_Endereco(_id INTEGER PRIMARY KEY, SiasN
	// INT, End TEXT,numero INT, Ap TEXT, Bloco TEXT, Complemento
	// TEXT,Referencia TEXT, CEP TEXT)";
	public void salvaDados(int string, String string2, String string3,
			String string4, String string5, String string6, String string7,
			String string8, String string9) {
		try {
			openDB();
			// TODO:Melhorar na próxima interação com erro

			String SQL = "INSERT INTO tab_Endereco(SiasN, Endereco ,numero , Ap , Bloco , Complemento ,Referencia , CEP, Bairro) VALUES ('"
					+ string
					+ "', '"
					+ string2
					+ "','"
					+ string3
					+ "', '"
					+ string4
					+ "','"
					+ string5
					+ "', '"
					+ string6
					+ "', '"
					+ string7 + "', '" + string8 + "', '" + string9 + "')";
			// BancoDados.execSQL(SQL);
			Toast.makeText(this, "Gravando Dados da Família:" + NumSias,
					Toast.LENGTH_LONG).show();
			// Toast.makeText(EnderecoActivity.this, "Salvo",
			// Toast.LENGTH_LONG).show();
		} catch (Exception erro) {
			mensagemAlerta("Erro", "Erro Ao Gravar " + erro.getMessage());
		}
		closeDB();
	}

	public boolean verificaRegistro(int NumeroSias) {
		openDB();
		boolean Retorno = false;
		try {
			String SQLQuery = "Select * from tab_Endereco WHERE SiasN="
					+ NumeroSias + " ";
			cVerifica = BancoDados.rawQuery(SQLQuery, null);
			if (cVerifica.getCount() != 0) {
				cVerifica.moveToFirst();
				ID = cVerifica.getInt(cVerifica.getColumnIndex("_id"));
				Retorno = true;
				Log.i("EnderecoActivity", "verificaRegistro() TRUE ");
			}
		} catch (Exception Err) {
			// mensagemAlerta("Erro","Erro Encontrado:"+Err.getMessage());
			Log.e("EnderecoActivity", "verificaRegistro() " + Err.getMessage());
		}
		closeDB();
		return Retorno;

	}

	public void setarDados(int Posicao) {
		try {
			openDB();
			String SQL2 = "SELECT * FROM tab_Endereco WHERE _id=" + Posicao
					+ " ";
			Log.v("EnderecoActivity", "setarDados() Posição: " + Posicao);
			Cursor c = BancoDados.rawQuery(SQL2, null);
			c.moveToFirst();
			do {
				// verifica se alterou o endereço
				if (c.getString(c.getColumnIndex("AlterouEndereco")).equals(
						"Sim")) {
					cbAlterouEndereco.setChecked(true);
					liberaEdicao();
				} else {
					cbAlterouEndereco.setChecked(false);
				}
				// textbox ou editText
				tbLogradouro.setText(c.getString(c.getColumnIndex("Endereco")));
				tbNumero.setText(c.getString(c.getColumnIndex("Numero")));
				tbAp.setText(c.getString(c.getColumnIndex("Ap")));
				tbBloco.setText(c.getString(c.getColumnIndex("Bloco")));
				tbComplemento.setText(c.getString(c
						.getColumnIndex("Complemento")));
				tbReferencia
				.setText(c.getString(c.getColumnIndex("Referencia")));
				actvBairro.setText(c.getString(c.getColumnIndex("Bairro")));
				tbCep.setText(c.getString(c.getColumnIndex("CEP")));


				// spCondicaoMoradia

				ArrayAdapter<CharSequence> adpUCondicaoMoradia = ArrayAdapter.createFromResource(
						this, R.array.CondicaoMoradia,
						android.R.layout.simple_spinner_item);
				adpUCondicaoMoradia.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
				int iUCondicaoMoradia = adpUCondicaoMoradia.getPosition(c.getString(c.getColumnIndex("CondicaoMoradia")));
				spCondicaoMoradia.setSelection(iUCondicaoMoradia);

				// spTipoConstrucao
				ArrayAdapter<CharSequence> adpUTipoConstrucao = ArrayAdapter.createFromResource(
						this, R.array.TipoConstrucao,
						android.R.layout.simple_spinner_item);
				adpUTipoConstrucao.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
				int iUTipoConstrucao = adpUTipoConstrucao.getPosition(c.getString(c.getColumnIndex("TipoConstrucao")));
				spTipoConstrucao.setSelection(iUTipoConstrucao);

				// spArea
				ArrayAdapter<CharSequence> adpUArea = ArrayAdapter.createFromResource(
						this, R.array.Area,
						android.R.layout.simple_spinner_item);
				adpUArea.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
				int iUArea = adpUArea.getPosition(c.getString(c.getColumnIndex("Area")));
				spArea.setSelection(iUArea);

				// Mais textbox ou editTexts
				tbNumComodos.setText(c.getString(c.getColumnIndex("NumComodos")));
				tbNumMoradores.setText(c.getString(c.getColumnIndex("NumMoradores")));
				tbNumNucleosFamiliares.setText(c.getString(c.getColumnIndex("NumNucleosFamiliares")));
				tbTMDFCasaAno.setText(c.getString(c.getColumnIndex("TMDFCasaAno")));
				tbTMDFCasaMes.setText(c.getString(c.getColumnIndex("TMDFCasaMes")));
				tbTMDFCasaDia.setText(c.getString(c.getColumnIndex("TMDFCasaDia")));
				tbTMDFBairroAno.setText(c.getString(c.getColumnIndex("TMDFBairroAno")));
				tbTMDFBairroMes.setText(c.getString(c.getColumnIndex("TMDFBairroMes")));
				tbTMDFBairroDia.setText(c.getString(c.getColumnIndex("TMDFBairroDia")));
				tbTMDFMunicipioAno.setText(c.getString(c.getColumnIndex("TMDFMunicipioAno")));
				tbTMDFMunicipioMes.setText(c.getString(c.getColumnIndex("TMDFMunicipioMes")));
				tbTMDFMunicipioDia.setText(c.getString(c.getColumnIndex("TMDFMunicipioDia")));

			} while (c.moveToNext());
			Log.v("EnderecoActivity", "setarDados() TRUE ");
		} catch (Exception E) {
			mensagemAlerta("Erro", "Ocorreu um erro inesperado");
			Log.e("EnderecoActivity", "Erro em setarDados() " + E.getMessage());
		}
		closeDB();
	}

	public void alteraRegistro(int id) {
		openDB();
		/*
		 * COLS = {"_id "," SiasN ","AlterouEndereco "," EndCodigo ",
		 * " Endereco "
		 * ," Numero "," Ap "," Bloco "," Complemento "," Referencia "
		 * ," Bairro ",
		 * "CEP "," CondicaoMoradia "," TipoConstrucao "," Area "," NumComodos "
		 * ," NumMoradores ",
		 * " NumNucleosFamiliares "," TMDFCasaAno ","TMDFCasaMes "
		 * ,"TMDFCasaDia "," TMDFBairroAno ",
		 * "TMDFBairroMes ","TMDFBairroDia "," TMDFMunicipioAno "
		 * ,"TMDFMunicipioMes","TMDFMunicipioDia"}
		 */
		String scbAlterouEndereco = "Não";
		if (cbAlterouEndereco.isChecked()) {
			scbAlterouEndereco = "Sim";
		}
		try {
			String uSQL = "UPDATE tab_Endereco SET " + " AlterouEndereco='"
					+ scbAlterouEndereco
					+ "',"
					+
					// EndCodigo NAO ALTERADO
					" Endereco='" + tbLogradouro.getText().toString() + "',"
					+ " Numero='" + tbNumero.getText().toString() + "',"
					+ " Ap='" + tbAp.getText().toString() + "'," + " Bloco='"
					+ tbBloco.getText().toString() + "'," + " Complemento='"
					+ tbComplemento.getText().toString() + "',"
					+ " Referencia='" + tbReferencia.getText().toString()
					+ "'," + " Bairro='" + actvBairro.getText().toString()
					+ "'," + " CEP='" + tbCep.getText().toString() + "',"
					+ " CondicaoMoradia='"
					+ spCondicaoMoradia.getSelectedItem().toString() + "',"
					+ " TipoConstrucao='"
					+ spTipoConstrucao.getSelectedItem().toString() + "',"
					+ " Area='" + spArea.getSelectedItem().toString() + "',"
					+ " NumComodos='" + tbNumComodos.getText().toString()
					+ "'," + " NumMoradores='"
					+ tbNumMoradores.getText().toString() + "',"
					+ " NumNucleosFamiliares='"
					+ tbNumNucleosFamiliares.getText().toString() + "',"
					+ " TMDFCasaAno='" + tbTMDFCasaAno.getText().toString()
					+ "'," + " TMDFCasaMes='"
					+ tbTMDFCasaMes.getText().toString() + "',"
					+ " TMDFCasaDia='" + tbTMDFCasaDia.getText().toString()
					+ "'," + " TMDFBairroAno='"
					+ tbTMDFBairroAno.getText().toString() + "',"
					+ " TMDFBairroMes='" + tbTMDFBairroMes.getText().toString()
					+ "'," + " TMDFBairroDia='"
					+ tbTMDFBairroDia.getText().toString() + "',"
					+ " TMDFMunicipioAno='"
					+ tbTMDFMunicipioAno.getText().toString() + "',"
					+ " TMDFMunicipioMes='"
					+ tbTMDFMunicipioMes.getText().toString() + "',"
					+ " TMDFMunicipioDia='"
					+ tbTMDFMunicipioDia.getText().toString() + "'"
					+ " WHERE _id=" + id + " ";
			BancoDados.execSQL(uSQL);
			Toast.makeText(EnderecoActivity.this, "Alterado", Toast.LENGTH_LONG)
			.show();
			Log.v("EnderecoActivity", "alteraRegistro() realizado com sucesso ");
		} catch (Exception Err) {
			mensagemAlerta("Erro", "Ocorreu um erro inesperado");
			Log.e("EnderecoActivity",
					"alteraRegistro() erro: " + Err.getMessage());

		}
		closeDB();
	}

	public void mensagemAlerta(String AlertTitle, String MSGAlert) {
		AlertDialog.Builder Mensagem = new AlertDialog.Builder(
				EnderecoActivity.this);
		Mensagem.setTitle(AlertTitle);
		Mensagem.setMessage(MSGAlert);
		Mensagem.setNeutralButton("Ok", null);
		Mensagem.show();
	}

	@Override
	protected void onResume() {
		// quando a Activity main receber o foco novamente abre-se novamente a
		// conexão

		// método responsável pela atualiza da lista de dados na tela
		// adapter.notifyDataSetChanged();

		super.onResume();
		cbAlterouEndereco.setChecked(true);
		cbAlterouEndereco
		.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			public void onCheckedChanged(CompoundButton buttonView,
					boolean isChecked) {
				if (isChecked) {
					liberaEdicao();
				} else {
					bloqueiaEdicao();
				}

			}

		});

	}

	private void liberaEdicao() {
		tbLogradouro.setEnabled(true);
		tbNumero.setEnabled(true);
		tbAp.setEnabled(true);
		tbBloco.setEnabled(true);
		tbComplemento.setEnabled(true);
		tbCep.setEnabled(true);
		tbReferencia.setEnabled(true);
		/*
		tbNumComodos.setEnabled(true);
		tbNumMoradores.setEnabled(true);
		tbNumNucleosFamiliares.setEnabled(true);
		tbTMDFCasaAno.setEnabled(true);
		tbTMDFCasaMes.setEnabled(true);
		tbTMDFCasaDia.setEnabled(true);
		tbTMDFBairroAno.setEnabled(true);
		tbTMDFBairroMes.setEnabled(true);
		tbTMDFBairroDia.setEnabled(true);
		tbTMDFMunicipioAno.setEnabled(true);
		tbTMDFMunicipioMes.setEnabled(true);
		tbTMDFMunicipioDia.setEnabled(true);
		spArea.setEnabled(true);
		spCondicaoMoradia.setEnabled(true);
		spTipoConstrucao.setEnabled(true);*/
		actvBairro.setEnabled(true);

	}

	private void bloqueiaEdicao() {
		tbLogradouro.setEnabled(false);
		tbNumero.setEnabled(false);
		tbAp.setEnabled(false);
		tbBloco.setEnabled(false);
		tbComplemento.setEnabled(false);
		tbCep.setEnabled(false);
		tbReferencia.setEnabled(false);
		/*
		tbNumComodos.setEnabled(false);
		tbNumMoradores.setEnabled(false);
		tbNumNucleosFamiliares.setEnabled(false);
		tbTMDFCasaAno.setEnabled(false);
		tbTMDFCasaMes.setEnabled(false);
		tbTMDFCasaDia.setEnabled(false);
		tbTMDFBairroAno.setEnabled(false);
		tbTMDFBairroMes.setEnabled(false);
		tbTMDFBairroDia.setEnabled(false);
		tbTMDFMunicipioAno.setEnabled(false);
		tbTMDFMunicipioMes.setEnabled(false);
		tbTMDFMunicipioDia.setEnabled(false);
		spArea.setEnabled(false);
		spCondicaoMoradia.setEnabled(false);
		spTipoConstrucao.setEnabled(false);*/
		actvBairro.setEnabled(false);
	}

	@Override
	protected void onPause() {

		// toda vez que o programa peder o foco fecha-se a conexão com o BD

		super.onPause();
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		unRegisterBaseActivityReceiver();
		finish();
	}
}
